#include <iostream>
//饿汉单例模式
// class SignalMode
// {
// private:
//     static SignalMode Smode;
//     int data;
// private:
//     SignalMode():data(10){std::cout<<"创建一个单例模式"<<std::endl;}
//     ~SignalMode(){}
// public:
//     SignalMode(const SignalMode&)=delete;
//     SignalMode operator=(SignalMode&)=delete;
//     int getdata(){return data;}
//     static SignalMode&GetInstance()
//     {
//         return Smode;
//     }
// };
// SignalMode SignalMode::Smode;


//懒汉单例模式
class SignalMode
{
private:
    int data;
    SignalMode():data(10){std::cout<<"单例模式创建"<<std::endl;}
public:
    int getdata(){return data;}
    SignalMode(const SignalMode&)=delete;
    SignalMode operator=(const SignalMode&)=delete;
public:
    static SignalMode &GetInstance()
    {
        static SignalMode Smode;//只能在c++11后保证线程安全，否则无法保证多个线程同时访问时的线程安全问题
        return Smode;
    }
};
int main()
{
    // std::cout<<SignalMode::GetInstance().getdata()<<std::endl;
    // std::cout<<SignalMode::GetInstance().getdata()<<std::endl;
    return 0;
}